﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Data;
using System.Data.OleDb;
using System.Text.RegularExpressions;
using Model;
using BLL;

public partial class PersonInfo_NewSalesRecordList : BasePage
{
    PersonInfoBO pbo = new PersonInfoBO();
    NewSalesRecordBO nbo = new NewSalesRecordBO();
    IntegralChangeBO ibo = new IntegralChangeBO();
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    /// <summary>
    /// QE
    /// </summary>
    public class qe
    {
        public string name { get; set; } //员工编号
        public int num { get; set; } //获得积分
        public int sy { get; set; } //剩余积分
        public int? hyzt { get; set; } //会员状态
        public string phone { get; set; } //手机
    }

    protected void btnUpload_Click(object sender, EventArgs e)
    {
        //string filePath = string.Empty;
        //try
        //{
        //    filePath = UploadFile.FileName;
        //    string name = filePath.Substring(filePath.LastIndexOf("\\") + 1).ToString();
        //    string exp = name.Substring(name.LastIndexOf(".") + 1);

        //    if (exp.ToLower() != "xls" && exp.ToLower() != "xlsx" && exp.ToLower() != "csv")
        //    {
        //        ClientScript.RegisterStartupScript(this.GetType(), "key1", "<script>alert('请上传(.xls|.xlsx|.csv)格式文件！');</script>");
        //    }
        //    else
        //    {
        //        string FileNam_Time = "";
        //        string FName = DateTime.Now.ToString("yyyyMMddHHmmss") + name;
        //        FileNam_Time = FName;//日期和名称组合
        //        string path = HttpContext.Current.Request.MapPath("FileUpload/ImportExcel/");
        //        // string url = "../FileUpload/QYRD/" + CurrentUser.Name + "/new" + FileNam_Time;
        //        DirectoryInfo upDir = new DirectoryInfo(path);
        //        if (!upDir.Exists)
        //        {
        //            upDir.Create();
        //        }
        //        filePath = path + FileNam_Time;
        //        UploadFile.SaveAs(filePath);
        //        ImportExcel(filePath);

        //    }
        //}
        //catch (Exception ex)
        //{
        //    AlertMessage("Err：" + ex.Message.ToString());
        //    return;
        //}
        //finally
        //{

        //}

    }

    private void ImportExcel(string excelFile)
    {
        //DataSet ds = new DataSet();
        //OleDbConnection myConn = new OleDbConnection();
        //try
        //{
        //    string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFile + ";Extended Properties=Excel 8.0;";
        //    if (rbt2007.Checked)
        //        strCon = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelFile + @";Extended Properties=""Excel 12.0;HDR=YES;""";
        //    myConn = new OleDbConnection(strCon);
        //    myConn.Open();
        //    System.Data.DataTable schemaTable = myConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });     //获取表名
        //    DataTable dt = new DataTable();
        //    if (schemaTable.Rows.Count > 0)
        //    {
        //        string tablename = "Sheet1" + "$";//获到表名 
        //        string sql = "select * from [" + tablename + "]";  //从工作表查询。
        //        OleDbDataAdapter da = new OleDbDataAdapter(sql, myConn);
        //        da.Fill(ds);

          
        //        dt.Columns.Add("rownum");  //rownum
        //        dt.Columns.Add("name1");   //BDNT Part No.          BDNT Part Name
        //        dt.Columns.Add("name2");   //BDNT Part Name         BDNT Part No.
        //        dt.Columns.Add("name3");   //Supplier Code          BDNT Revision No.
        //        dt.Columns.Add("name4");   //BDNT Revision No.      BDNT Revision Status
        //        dt.Columns.Add("name5");   //BDNT Revision Status   Supplier Code 
        //        dt.Columns.Add("name6");   //Color                  Planed PPAR date
        //        dt.Columns.Add("name7");   //Planed PPAR date       Color   
        //        dt.Columns.Add("name8");   //QE                     QE
        //        dt.Columns.Add("name9");   //Supplier Admin         Supplier Admin
        //        dt.Columns.Add("name10");  //结果                   结果
        //        dt.Columns.Add("name11");
        //        dt.Columns.Add("name12");
        //        dt.Columns.Add("name13");
        //        dt.Columns.Add("name14");
        //        dt.Columns.Add("name15");
        //        dt.Columns.Add("name16");
        //        dt.Columns.Add("name17");
        //        dt.Columns.Add("name18");
        //        dt.Columns.Add("name19");
        //        dt.Columns.Add("name20");
        //        dt.Columns.Add("name21");
        //        dt.Columns.Add("name22");
        //        dt.Columns.Add("name23");
        //        dt.Columns.Add("name24");
        //        dt.Columns.Add("name25");
        //        dt.Columns.Add("name26");
        //        dt.Columns.Add("name27");
        //        dt.Columns.Add("name28");
        //        dt.Columns.Add("name29");
        //        dt.Columns.Add("name30");
        //        int num = 0;
        //        foreach (DataRow dr in ds.Tables[0].Rows)
        //        {
        //            num++;
        //            DataRow r = dt.NewRow();
        //            r[0] = num;                         //rownum
        //            r[1] = dr[0]; //rownum              //part name
        //            r[2] = dr[1];//part no              //part no
        //            r[3] = dr[2];//part name            //revision no
        //            r[4] = dr[3];//supplier name        //revision status
        //            r[5] = dr[4];//status               //supplier code
        //            r[6] = dr[5]; //color               //ppar date
        //            r[7] = dr[6]; //date                //color
        //            r[8] = dr[7]; //qe                  //qe
        //            r[9] = dr[8];//Supplier Admin       //admin
        //            r[10] = dr[9];
        //            r[11] = dr[10];
        //            r[12] = dr[11];
        //            r[13] = dr[12];
        //            r[14] = dr[13];
        //            r[15] = dr[14];
        //            r[16] = dr[15];
        //            r[17] = dr[16];
        //            r[18] = dr[17];
        //            r[19] = dr[18];
        //            r[20] = dr[19];
        //            r[21] = dr[20];
        //            r[22] = dr[21];
        //            r[23] = dr[22];
        //            r[24] = dr[23];
        //            r[25] = dr[24];
        //            r[26] = dr[25];
        //            r[27] = dr[26];
        //            r[28] = dr[27];
        //            r[29] = dr[28];

        //            if (dr[0].ToString() == "" && dr[1].ToString() == "" && dr[2].ToString() == "" && dr[3].ToString() == "" && dr[4].ToString() == "")
        //                continue;

        //            string bopp = Checkpp(r[10].ToString().Trim(),r[14].ToString().Trim(),r[18].ToString().Trim(),r[22].ToString().Trim(),r[26].ToString().Trim(),r[2].ToString());
        //            r[30] = bopp; //结果
        //            dt.Rows.Add(r);
        //        }
        //        GridView1.DataSource = dt;
        //        GridView1.DataBind();
        //        if (ds.Tables[0].Rows.Count > 0)
        //            btnSave.Visible = true;
        //        else
        //            btnSave.Visible = false;
        //    }

        //    Session["dsexcel"] = dt;
        //    btnSave.Visible = true;

        //}
        //catch (Exception ex)
        //{
        //    AlertMessage("Err:" + ex.Message.ToString());
        //    GC.Collect();
        //}
        //finally
        //{
        //    myConn.Close();
        //    myConn.Dispose();
        //}
    }

    public bool CheckEmail(string Email)
    {
        if (!getRegexInput(Email, @"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"))
        {
            return false;
        }
        else
        {
            return true;
        }

    }

    public bool getRegexInput(string str, string regexStr)//str是要被验证的字符串，regexStr为正则表达式
    {
        Regex rStr = new Regex(regexStr);
        bool re = false;
        if (rStr.IsMatch(str))
        {
            re = true;
        }
        return re;
    }

    /// <summary>
    /// 验证SupplierCode
    /// </summary>
    /// <param name="SupplierCode"></param>
    /// <returns></returns>
    private string Check(string SupplierCode)
    {

        return "0";
        //return "<font color='red'>Supplier Name Does not exist</font>";
    }

    /// <summary>
    /// 验证QE，part，suppliercode,supplieradmin
    /// </summary>
    /// <param name="PartNo"></param>
    /// <param name="supplierid"></param>
    /// <param name="color"></param>
    /// <param name="qe"></param>
    /// <param name="supplieradmin"></param>
    /// <returns></returns>
    private string Checkpp(string no1,string no2,string no3,string no4,string no5,string TransactionNo)
    {
        if (nbo.GetList(" TransactionNo='" + TransactionNo + "'").Tables[0].Rows.Count > 0)
        {
            return "<font color='red'>Transaction No已存在</font>";
        }
        if (no1 == "")
        {
            return "<font color='red'>人员1编号不存在</font>";
        }
        List<PersonInfo> list = pbo.GetModelList(" PersonNo='" + no1 + "'");
        if (list.Count == 0)
        {
            return "<font color='red'>人员1编号不存在</font>";
        }
        if (no2 != "")
        {
            list = pbo.GetModelList(" PersonNo='" + no2 + "'");
            if (list.Count == 0)
            {
                return "<font color='red'>人员2编号不存在</font>";
            }
        }
        if (no3 != "")
        {
            list = pbo.GetModelList(" PersonNo='" + no3 + "'");
            if (list.Count == 0)
            {
                return "<font color='red'>人员3编号不存在</font>";
            }
        }
        if (no4 != "")
        {
            list = pbo.GetModelList(" PersonNo='" + no4 + "'");
            if (list.Count == 0)
            {
                return "<font color='red'>人员4编号不存在</font>";
            }
        }
        if (no5 != "")
        {
            list = pbo.GetModelList(" PersonNo='" + no5 + "'");
            if (list.Count == 0)
            {
                return "<font color='red'>人员5编号不存在</font>";
            }
        }
        return "<font color='blue'>验证成功</font>";
    }

    /// <summary>
    /// 验证PartNo合法性
    /// </summary>
    /// <param name="PartNo"></param>
    /// <returns></returns>
    private bool CheckPartNo(string PartNo)
    {
        //if (PartNo.Length < 11)
        //    return false;
        //if (PartNo.Substring(0, 4).ToUpper() != "TIG-")
        //    return false;
        //else return true;
        return true;
    }

    /// <summary>
    /// 保存
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    protected void btnSave_Click(object sender, EventArgs e)
    {
        //string message = "";
        //int cnum = 0;
        //try
        //{
        //    if (Session["dsexcel"] != null)
        //    {
                
        //        List<qe> list = new List<qe>();  //初始化一个QE集合
        //        DataTable ds = Session["dsexcel"] as DataTable;
        //        List<PersonInfo> listPer = null;
        //        PersonInfo p = null;
        //        NewSalesRecord ne = null;
        //        foreach (DataRow dr in ds.Rows)
        //        {
        //            if (dr["name30"].ToString().Contains("成功"))
        //            {
        //                ne = new NewSalesRecord
        //                {
        //                    Trans_Date = DateTime.Parse(dr[1].ToString().Trim()),
        //                    TransactionNo = dr[2].ToString().Trim(),
        //                    Store = dr[3].ToString().Trim(),
        //                    Prod_Name = dr[4].ToString().Trim(),
        //                    Prod_Ref = dr[5].ToString().Trim(),
        //                    UNITS = int.Parse(dr[6].ToString().Trim()),
        //                    RETAILPRICE = dr[7].ToString().Trim(),
        //                    AMOUNT = dr[8].ToString().Trim(),
        //                    POINTS = dr[9].ToString().Trim(),
        //                    ACCT1_ID = dr[10].ToString().Trim(),
        //                    ACCT1_NAME = dr[11].ToString().Trim(),
        //                    ACCT1_PERC = dr[12].ToString().Trim(),
        //                    ACCT1_POINTS = dr[13].ToString().Trim(),
        //                    ACCT2_ID = dr[14].ToString().Trim(),
        //                    ACCT2_NAME = dr[15].ToString().Trim(),
        //                    ACCT2_PERC = dr[16].ToString().Trim(),
        //                    ACCT2_POINTS = dr[17].ToString().Trim(),
        //                    ACCT3_ID = dr[18].ToString().Trim(),
        //                    ACCT3_NAME = dr[19].ToString().Trim(),
        //                    ACCT3_PERC = dr[20].ToString().Trim(),
        //                    ACCT3_POINTS = dr[21].ToString().Trim(),
        //                    ACCT4_ID = dr[22].ToString().Trim(),
        //                    ACCT4_NAME = dr[23].ToString().Trim(),
        //                    ACCT4_PERC = dr[24].ToString().Trim(),
        //                    ACCT4_POINTS = dr[25].ToString().Trim(),
        //                    ACCT5_ID = dr[26].ToString().Trim(),
        //                    ACCT5_NAME = dr[27].ToString().Trim(),
        //                    ACCT5_PERC = dr[28].ToString().Trim(),
        //                    ACCT5_POINTS = dr[29].ToString().Trim()
        //                };
        //                if (nbo.GetList(" TransactionNo='" + ne.TransactionNo + "'").Tables[0].Rows.Count > 0)
        //                {
        //                    message += "TransactionNo:" + ne.TransactionNo + "已存在<br>";
        //                }
        //                else
        //                {
        //                    int num = nbo.Add(ne);
        //                    if (num > 0)
        //                    {
        //                        cnum++;
        //                        //////将QE加入到集合中
        //                        if (ne.ACCT1_ID != "") //销售1
        //                        {
        //                            listPer = pbo.GetModelList(" PersonNo='" + ne.ACCT1_ID + "'");
        //                            p = listPer[0];
        //                            if (p != null)
        //                            {
        //                                int qe = 0;
        //                                foreach (qe q in list)
        //                                {
        //                                    if (q.name == ne.ACCT1_ID)
        //                                    {
        //                                        qe = 1;
        //                                        q.num += int.Parse(ne.ACCT1_POINTS);
        //                                        q.sy = int.Parse(p.SurplusIntegral.ToString())+int.Parse(ne.ACCT1_POINTS);
        //                                        //q.hyzt = p.HYZT;
        //                                    }
        //                                }
        //                                if (qe == 0)
        //                                {

        //                                    list.Add(new qe { name = ne.ACCT1_ID, num = int.Parse(ne.ACCT1_POINTS), phone = p.Phone, sy = int.Parse(p.SurplusIntegral.ToString()) + int.Parse(ne.ACCT1_POINTS), hyzt = 0 });
        //                                }
        //                                JF(p, ne.ACCT1_POINTS, ne.Prod_Ref, ne.UNITS.ToString(), ne.Trans_Date.ToString());
        //                            }
        //                        }
        //                        if (ne.ACCT2_ID != "") //销售2
        //                        {
        //                            listPer = pbo.GetModelList(" PersonNo='" + ne.ACCT2_ID + "'");
        //                            p = listPer[0];
        //                            if (p != null)
        //                            {
        //                                int qe = 0;
        //                                foreach (qe q in list)
        //                                {
        //                                    if (q.name == ne.ACCT2_ID)
        //                                    {
        //                                        qe = 1;
        //                                        q.num += int.Parse(ne.ACCT2_POINTS);
        //                                        q.sy = int.Parse(p.SurplusIntegral.ToString()) + int.Parse(ne.ACCT2_POINTS);
        //                                       // q.hyzt = p.HYZT;
        //                                    }
        //                                }
        //                                if (qe == 0)
        //                                {

        //                                    list.Add(new qe { name = ne.ACCT2_ID, num = int.Parse(ne.ACCT2_POINTS), phone = p.Phone, sy = int.Parse(p.SurplusIntegral.ToString()) + int.Parse(ne.ACCT2_POINTS), hyzt = p.HYZT });
        //                                }
        //                                JF(p, ne.ACCT2_POINTS, ne.Prod_Ref, ne.UNITS.ToString(), ne.Trans_Date.ToString());
        //                            }
        //                        }
        //                        if (ne.ACCT3_ID != "") //销售3
        //                        {
        //                            listPer = pbo.GetModelList(" PersonNo='" + ne.ACCT3_ID + "'");
        //                            p = listPer[0];
        //                            if (p != null)
        //                            {
        //                                int qe = 0;
        //                                foreach (qe q in list)
        //                                {
        //                                    if (q.name == ne.ACCT3_ID)
        //                                    {
        //                                        qe = 1;
        //                                        q.num += int.Parse(ne.ACCT3_POINTS);
        //                                        q.sy = int.Parse(p.SurplusIntegral.ToString()) + int.Parse(ne.ACCT3_POINTS);
        //                                        q.hyzt = p.HYZT;
        //                                    }
        //                                }
        //                                if (qe == 0)
        //                                {

        //                                    list.Add(new qe { name = ne.ACCT3_ID, num = int.Parse(ne.ACCT3_POINTS), phone = p.Phone, sy = int.Parse(p.SurplusIntegral.ToString()) + int.Parse(ne.ACCT3_POINTS), hyzt = p.HYZT });
        //                                }
        //                                JF(p, ne.ACCT3_POINTS, ne.Prod_Ref, ne.UNITS.ToString(), ne.Trans_Date.ToString());
        //                            }
        //                        }
        //                        if (ne.ACCT4_ID != "") //销售4
        //                        {
        //                            listPer = pbo.GetModelList(" PersonNo='" + ne.ACCT4_ID + "'");
        //                            p = listPer[0];
        //                            if (p != null)
        //                            {
        //                                int qe = 0;
        //                                foreach (qe q in list)
        //                                {
        //                                    if (q.name == ne.ACCT4_ID)
        //                                    {
        //                                        qe = 1;
        //                                        q.num += int.Parse(ne.ACCT4_POINTS);
        //                                        q.sy = int.Parse(p.SurplusIntegral.ToString()) + int.Parse(ne.ACCT4_POINTS);
        //                                        q.hyzt = p.HYZT;
        //                                    }
        //                                }
        //                                if (qe == 0)
        //                                {

        //                                    list.Add(new qe { name = ne.ACCT4_ID, num = int.Parse(ne.ACCT4_POINTS), phone = p.Phone, sy = int.Parse(p.SurplusIntegral.ToString()) + int.Parse(ne.ACCT4_POINTS), hyzt = p.HYZT });
        //                                }
        //                                JF(p, ne.ACCT4_POINTS, ne.Prod_Ref, ne.UNITS.ToString(), ne.Trans_Date.ToString());
        //                            }
        //                        }
        //                        if (ne.ACCT5_ID != "") //销售5
        //                        {
        //                            listPer = pbo.GetModelList(" PersonNo='" + ne.ACCT5_ID + "'");
        //                            p = listPer[0];
        //                            if (p != null)
        //                            {
        //                                int qe = 0;
        //                                foreach (qe q in list)
        //                                {
        //                                    if (q.name == ne.ACCT5_ID)
        //                                    {
        //                                        qe = 1;
        //                                        q.num += int.Parse(ne.ACCT5_POINTS);
        //                                        q.sy = int.Parse(p.SurplusIntegral.ToString()) + int.Parse(ne.ACCT5_POINTS);
        //                                        q.hyzt = p.HYZT;
        //                                    }
        //                                }
        //                                if (qe == 0)
        //                                {

        //                                    list.Add(new qe { name = ne.ACCT5_ID, num = int.Parse(ne.ACCT5_POINTS), phone = p.Phone, sy = int.Parse(p.SurplusIntegral.ToString()) + int.Parse(ne.ACCT5_POINTS), hyzt = p.HYZT });
        //                                }
        //                                JF(p, ne.ACCT5_POINTS, ne.Prod_Ref, ne.UNITS.ToString(), ne.Trans_Date.ToString());
        //                            }
        //                        }
        //                        //////将QE加入到集合中

        //                    }
        //                }
        //            }
        //        }
        //        foreach (qe q in list)
        //        {
        //            try
        //            {
        //             string mess=   new SendDX().Send("报喜啦！您新获星积分" + q.num+ "分，目前可用积分为" + q.sy + ", 继续加油！好礼兑换请登入公共微信号", q.phone,q.hyzt);
        //             message +=q.phone+ mess + "<br>";
        //            }
        //            catch (Exception ex)
        //            {
        //                message += q.phone+":短信发送失败<br>";
        //            }
        //        }
           
        //    }


               
            

        //    //ppbo.UpdateTerminationForCheck(); //将已不存在的ppar禁用
        //    btnSave.Visible = false;
        //    lblMessage.Text = message;
        //    AlertMessage("已导入" + cnum + "条数据");
        //}
        //catch (Exception ex)
        //{
        //    AlertMessage(ex.Message.ToString());
        //}
        //finally
        //{
        //    Session["dsexcel"] = null;
        //}
    }

    /// <summary>
    /// 修改员工积分变化
    /// </summary>
    /// <param name="p1">员工</param>
    /// <param name="jf">积分</param>
    /// <param name="cp">产品</param>
    /// <param name="sl">数量</param>
    /// <param name="sj">时间</param>
    /// <returns></returns>
    public bool JF(PersonInfo p1, string jf, string cp, string sl, string sj)
    {
        try
        {
            //p1.SumIntegral += int.Parse(jf);
            //p1.SurplusIntegral += int.Parse(jf);
            //pbo.Update(p1);
            //IntegralChange ic = new IntegralChange();
            //ic.Action = string.Format("出售{0}个{1}", sl, cp);
            //ic.Integral = int.Parse(jf);
            //ic.PID = p1.ID;
            //ic.SurplusIntegral = p1.SurplusIntegral;
            //ic.Time = DateTime.Parse(sj);
            //ibo.Add(ic);
            //if (p1.Superior != "0" && p1.Superior != "")
            //{
            //    PersonInfo p2 = pbo.GetModelList(" PersonNo='" + p1.Superior + "'")[0];
            //    if (p2 != null)
            //    {
            //        p2.SumIntegral += Convert.ToInt32(Math.Round(int.Parse(jf) * 0.1,0));
            //        p2.SurplusIntegral += Convert.ToInt32(Math.Round(int.Parse(jf) * 0.1, 0));
            //        pbo.Update(p2);
            //        ic.Action = string.Format("下属{0}出售了{1}个{2}", p1.Name, sl, cp);
            //        ic.Integral = Convert.ToInt32(Math.Round(int.Parse(jf) * 0.1, 0));
            //        ic.PID = p2.ID;
            //        ic.SurplusIntegral = p2.SurplusIntegral;
            //        ic.Time = DateTime.Parse(sj);
            //        ibo.Add(ic);
            //    }

            //}
            return true;
        }
        catch (Exception)
        {
            return false;
        }
    }

    /// <summary>
    /// 实现数据的四舍五入法
    /// </summary>
    /// <param name="v">要进行处理的数据</param>
    /// <param name="x">保留的小数位数</param>
    /// <returns>四舍五入后的结果</returns>
    private double Round(double v, int x)
    {
        bool isNegative = false;
        //如果是负数
        if (v < 0)
        {
            isNegative = true;
            v = -v;
        }

        int IValue = 1;
        for (int i = 1; i <= x; i++)
        {
            IValue = IValue * 10;
        }
        double Int = Math.Round(v * IValue + 0.5, 0);
        v = Int / IValue;

        if (isNegative)
        {
            v = -v;
        }

        return v;
    }

    private string GetQLevelNum(int num)
    {
        string value = "";
        switch (num.ToString().Length)
        {
            case 1:
                value += "00" + num;
                break;
            case 2:
                value += "0" + num;
                break;
            case 3:
                value += num.ToString();
                break;
            default:
                value += "001";
                break;
        }
        return value;
    }

}
